CS422 - HW3
-----------

This directory contains partially completed K-semantics of SILF,
of its dynamic type checker, and of its static type checker.  The only
incomplete files are the ones named ???-semantics.maude.  This HW
requires you to complete those three files.  Nothing else needs to
change.

The directory is structured as follows:
- README.txt = this file
- SILF.pdf = the complete definitions using the optimized K notation
- strict.maude = generates the trivial and boring structural
computation equations corresponding to the strictness attributes; you
shouldn't need to use this module, but it may be instructive to take a
look into it if you are interested in K and its implementation.
- k-plain-prelude.maude = a file defining the K infrastructure
needed to define our various languages, using any of the two Maude
approaches discussed in class.
- k-meta-prelude.maude = adds to the above the meta-level
infrastructure needed for K definitions.
- untyped = contains the K definition of the untyped SILF.  You need
to complete the file silf-untyped-semantics.maude in this directory.
- typed = contains the K-definition of the typed SILF, both
dynamically and statically.  You need to complete the files
silf-dynamic-type-checking-semantics.maude in the subdirectory
dynamic-type-checking and silf-static-type-checking-semantics.maude in
the subdirectory static-type-checking.

The three semantics files are unrelated to each other, in the sense
that you do not need to make one work in order for the others to
work.  There is, though, something to learn from each, which may help
you conceptually with the definitions of the others.  To test your
definitions, go into the directory containing the corresponding
???-semantics.maude file and type the command "maude ???-semantics".
Looking at the normal forms obtained, especially at the top of the
k(...) components, you will know when your definition is complete and
also what to do next.  Defining languages in K is quite a self-driven
process once you have enough examples, the strictness and the
configuration defined (as you do for this particular HW).

Enjoy,
Grigore
